---
sidebar_position: 4
---

# Состояния файлов

Давайте более подробно разберемся с тем, в каких состояниях могут быть файлы с точки зрения Git. Каждый файл может находится только в одном из двух состояний:

1. **Отслеживаемым** (tracked). Об этих файлах Git знает и отслеживает изменения в них. Отслеживаемые файлы в свою очередь могут находится в следующих состояниях:
   1. **Неизмененным** (unmodified). То есть с момента последнего коммита в файле не было никаких изменений
   2. **Измененным** (modified). То есть с последнего коммита в файле были произведены какие-то изменения.
   3. **Подготовленным к коммиту** (staged). Это значит, что вы внесли изменения в этот файл и затем проиндексировали их, и эти изменения будут добавлены в следующий коммит.
2. **Неотслеживаемым** (untracked). О неотслеживаемых файлах Git не знает, поэтому изменения в них не будут добавлены в коммит. Это любые файлы в вашем рабочем каталоге, которые не входили в последний коммит и не подготовлены к текущему коммиту.

*Наглядная визуализация состояний и переходов между ними (источник: [git-scm.com/book](https://git-scm.com/book/ru/v2/Основы-Git-Запись-изменений-в-репозиторий))*:

![Визуализация состояний файлов и переходов между ними](images/git-file-statuses.png)

Чтобы посмотреть статус текущих файлов, нам потребуется команда `git status`.

:::note Команда `git status`

Выводит информацию о статусе файлов, находящихся в репозитории.

Документация [здесь](https://git-scm.com/docs/git-status).
:::

Предположим, вы добавили в свой проект новый файл, простой файл README.

```bash
echo 'My Project' > README
```

Наша папка будет выглядеть следующим образом:

```bash
bmstu/
└── README
```

Если этого файла раньше не было, и вы выполните `git status`, вы увидите свой неотслеживаемый файл вот так:

```bash
On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	README

nothing added to commit but untracked files present (use "git add" to track)
```

Видно, что на данный момент у нас нет ни одного коммита.

## Атрибуция

При подготовке статьи использован материал:

- [git-scm.com/docs](https://git-scm.com/docs/)
- [smartiqa.ru/courses/git](https://smartiqa.ru/courses/git)
